package vue.graphique;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import modele.Ressources;

import controleur.Controleur;

import vue.Affichage;

public class AffichageGraphique extends JFrame implements Affichage, ActionListener {
	private static final long serialVersionUID = -2041459724746620340L;
	
	// Variable(s) d'instance
		private VuePlateau plateau;
		private JButton deplacer;
		private JButton quitter;
		
		// Constructeur(s)
		public AffichageGraphique() {
			super("Plannificateur de trajectoires");
			
			// Proprietes de la fenetre
			this.setSize(Ressources.WIDTH_PLATEAU, Ressources.HEIGHT_FENETRE);
		    this.setLocationRelativeTo(null);
		    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    this.setUndecorated(true);
		    this.setAlwaysOnTop(true);

		    // Pannel Plateau
		    this.plateau = new VuePlateau();
		    this.add(plateau, BorderLayout.NORTH);
		    
		    // Pannel boutons
		    JPanel boutons = new JPanel();
		    boutons.setPreferredSize(new Dimension(Ressources.WIDTH_PLATEAU, Ressources.HEIGHT_BOUTONS));
		    boutons.setBackground(Color.BLUE);
		    	this.deplacer = new JButton("Deplacer");
		    	this.deplacer.addActionListener(this);
		    	boutons.add(this.deplacer, BorderLayout.CENTER);
		    	this.quitter = new JButton("Quitter");
		    	this.quitter.addActionListener(this);
		    	boutons.add(this.quitter, BorderLayout.CENTER);
		    this.add(boutons, BorderLayout.SOUTH);
		    
		    this.setVisible(true);
		}
		// Methode(s)
		@Override
		public void afficher(Object o) {
			this.plateau.dessinerPlateau(o.toString());
		}

		@Override
		public void actionPerformed(ActionEvent arg0) {
			if(arg0.getSource() == this.quitter) {
				// Si l'utilisateur a clique sur le bouton quitter
				if(JOptionPane.showConfirmDialog(this, "Voulez-vous reellement quitter ?", "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE)==0) {
					this.setVisible(false);
					this.dispose();
					System.exit(0);
				}
			}
			if(arg0.getSource() == this.deplacer) {
				// S'il a quitté sur le bouton deplacer
				(new Thread(Controleur.getInstance())).start();
			}
		}
		@Override
		public void activationBoutons(boolean etat) {
			this.quitter.setEnabled(etat);
			this.deplacer.setEnabled(etat);
		}
		@Override
		public void setUniteSelectionnee(String unite) {
			this.plateau.setUniteSelectionnee(unite);
		}
}
